이곳은 개발을 위한 베타 사이트 입니다.
기여내역은 언제든 초기화될 수 있으며, 예기치 못한 오류가 발생할 수 있습니다.

ARMv8-A/명령어 목록

덤프버전 :


명령어 집합
CISCAMD64x86 · M68K · 68xx · Z80 · 8080 · MOS 65xx · VAX
RISCAArch64 ARM · RISC-V · MIPS · DEC Alpha · POWER PowerPC · CELL-BE
LoongArch · OpenRISC · PA-RISC · SPARC · Blackfin · SuperH · AVR32 AVR
VLIW
EPIC
E2K · IA-64 · Crusoe


1. 개요
1.1. 약어 설명
1.2. 표기법
1.3. 명령어 인코딩
1.4. 레지스터
1.4.1. 정수 레지스터
1.4.2. 부동소수점/벡터 레지스터
1.4.3. 특수 레지스터
2. 명령어 목록
2.1. 데이터 처리 (레지스터) 명령어
2.1.1. 세부 인코딩
2.2. 데이터 처리 (Immediate) 명령어
2.2.1. 세부 인코딩
2.3. Load/Store 명령어
2.3.1. Load register (literal)
2.3.2. 세부 인코딩
2.4. 분기 및 제어 명령어
2.4.1. 세부 인코딩



1. 개요[편집]


ARMv8-A 아키텍처의 명령어 목록.


1.1. 약어 설명[편집]


  • Rd: destination register.
  • Rt: target register.
  • Rn/Rm:

1.2. 표기법[편집]




1.3. 명령어 인코딩[편집]


ARMv8-A ISA에서 명령어는 32-bit 길이로 인코딩되며, MIPS 및 RISC-V 등의 다른 RISC ISA에 비해 명령어 인코딩이 복잡한 편이다.

1.4. 레지스터[편집]


ARMv8-A ISA에서는 정수 레지스터 31개, 부동소수점 레지스터 32개 및 SP(stack pointer), PC(program counter) 등을 정의한다.

1.4.1. 정수 레지스터[편집]


레지스터 번호는 5 bit로 인코딩되며, 0-30은 레지스터 R0-R30, 31(0b11111)은 상수 0인 ZR(zero register)를 의미한다.
  • 32-bit: W0-W30. R0-R30의 하위 32비트에 해당한다.
  • 64-bit: X0-X30. R0-R30의 하위 64비트에 해당한다.

1.4.2. 부동소수점/벡터 레지스터[편집]


부동소수점/벡터 레지스터는 V0-V31로 표기한다.
  • 8-bit: B0-B31
  • 16-bit: H0-H31
  • 32-bit: S0-S31
  • 64-bit: D0-D31
  • 128-bit: Q0-Q31

1.4.3. 특수 레지스터[편집]


  • SP: Stack Pointer (64-bit).
  • PC: Program Counter (64-bit). 현재 실행되는 명령어의 주소를 가리킨다
  • FPCR: Floating Pointer Control Register
  • FPSR: Floating Pointer Status Register
  • PSTATE: Processor State
    • 조건 플래그 (NZCV)
    • N: Negative
    • Z: Zero
    • C: Carry
    • V: Overflow
    • 예외 마스크 (DAIF)
    • D: Debug exception mask bit
    • A: SError interrupt mask bit
    • I: IRQ interrupt mask bit
    • F: FIQ interrupt mask bit


2. 명령어 목록[편집]


명령어 분류는 ARMv8-A 레퍼런스 매뉴얼을 따른다. (단, 서술 순서는 다를 수 있다.)

2.1. 데이터 처리 (레지스터) 명령어[편집]



2.1.1. 세부 인코딩[편집]



2.2. 데이터 처리 (Immediate) 명령어[편집]


명령어mnemonicop0op/opcS비고
ADR00x0-
ADRP00x1-
ADD01x00sf로 32-bit/64-bit 지정
ADDS01x01sf로 32-bit/64-bit 지정
SUB01x10sf로 32-bit/64-bit 지정
SUBS01x11sf로 32-bit/64-bit 지정
AND10000-sf로 32-bit/64-bit 지정
ORR10001-sf로 32-bit/64-bit 지정
EOR10010-sf로 32-bit/64-bit 지정
ANDS10011-sf로 32-bit/64-bit 지정
MOVN10100-sf로 32-bit/64-bit 지정
MOVZ10110-sf로 32-bit/64-bit 지정
MOVK10111-sf로 32-bit/64-bit 지정

2.2.1. 세부 인코딩[편집]



2.3. Load/Store 명령어[편집]



2.3.1. Load register (literal)[편집]


명령어mnemonicopcV비고
LDR00032-bit
LDR01064-bit
LDRSW100
PRFM100

2.3.2. 세부 인코딩[편집]



2.4. 분기 및 제어 명령어[편집]



2.4.1. 세부 인코딩[편집]